Showing posts with label Technical. Show all posts
Showing posts with label Technical. Show all posts

Wednesday, December 05, 2007

Star10. ஒரு 'Chip'-இன் (உருளைக்கிழங்கு அல்ல!) கதை

நான் குப்பை கொட்டும் வன்பொருள் வடிவாக்கத் துறை சார்ந்து ஏதாவது எழுதலாம் என்று தோன்றியதால் விளைந்தது இந்தப் பதிவு! இப்பதிவு, ஒரு மின்னணு சர்குயூட் எவ்வாறு வடிவமைக்கப்பட்டு சிலிக்கன் சில்லாக (CHIP) உருவெடுக்கிறது என்பதை எளிமையாக விவரிக்க ஒரு முயற்சி!

Integrated circuit-ஐ (IC) உள்ளடக்கிய சிலிக்கன் சில்லுகள் வன்பொருள் (Hardware) வகையைச் சார்ந்தவை. ஆனால், இவற்றை வடிவமைக்கக் (design) கூட மென்பொருளின் (software) துணை தேவைப்படுகிறது! இந்த சிலிக்கன் சில்லுகள் நாம் தினசரி வாழ்வில் கையாளும் பல மின்னணு சாதனங்களில் உயிராக இயங்குகின்றன. உதாரணம்: தொலைக்காட்சி, கணினி, டிவிடி, வானொலி, கைத்தொலைபேசி, ஐபாட் etc.... பாக்கெட் வானொலியிலிருந்து ராக்கெட் இயக்கம் வரை, சிலிக்கன் சில்லின் ஆதிக்கம் விரவி இருக்கிறது! வன்பொருளை வடிவமைக்க உதவும் மென்பொருட்கருவிகளை EDA (Electronic design automation) tools என்றழைக்கிறோம்.

சிலிக்கன் சில் என்ற வன்பொருளில் உள்ள மின்னணு சர்குயூட் என்பது ஆயிரம் / லட்சம் / கோடி டிரான்ஸிஸ்டர்கள் (transistor) என்ற நுண்பொருட்களால் ஆனது. டிரான்ஸிஸ்டர் என்பதே ஒரு மின்னணு சர்குயூட்டை உருவாக்கத் தேவையான அடிப்படை building block என்று கூறலாம். டிரான்ஸிஸ்டருக்கு இரண்டு நிலைகள் உண்டு, மின்னணு கடத்தும் / கடத்தா நிலைகள். இவற்றை பூலியன் கணக்கில் (Boolean Algebra), மின்னணு கடத்தும் நிலையை 1 என்றும், கடத்தா நிலையை 0 என்றும் கூறுகிறோம். பூஜ்யமும் இல்லாத, ஒன்றும் இல்லாத ஒரு நிலையைப் (tristate) பற்றிக் கூறி, வாசிக்கும் மென்பொருளாளர்களை அதிகம் குழப்ப எண்ணமில்லை :)

டிரான்ஸிஸ்டர்கள் கொண்டு, குறிப்பிட்ட வன்பொருள் செயலாக்கம் (hardware functionality) உடைய கேட்'களை (gates) வடிவமைக்கலாம். இவற்றில் முக்கியமானவை, AND, OR, NOR, NAND எனப்படுபவை. உதாரணத்துக்கு, இரண்டு உள்ளீட்டுக் கணுக்கணும் (input nodes X,Y) ஒரு வெளியீட்டுக் கணுவும் (output node F) கொண்ட ஒரு AND மற்றும் OR கேட்'டின் ஸிம்பலையும், செயலாக்கத்தை விளக்கும் Truth Table-ஐயும் படத்தில் காணலாம். AND-இன் எதிர்மறை NAND, அது போலவே எதிர்மறையானவை OR-உம் NOR-உம். இரண்டுக்கும் மேற்பட்ட உள்ளீட்டுக் கணுக்கள் கொண்ட கேட்'களையும் உருவாக்க முடியும்.



ஒரு கேட்'டின் Truth Table என்பது உள்ளீடுகளின் வேறுபட்ட நிலைகளில், வெளியீட்டு நிலையை (0 அல்லது 1) சொல்கிறது. அது போலவே, பல உள்ளீடுகளும், வெளியீடுகளும் கொண்ட, பல கேட்'களால் ஆன ஒரு மின்னணு சர்குயூட் செயலாக்கத்தையே, ஒரு Truth Table வாயிலாக (பூலியன் வடிவில்) விவரிக்க முடியும்.

பெரும்பாலான மின்னணு சர்குயூட்கள் 'கிளாக்' (Clock, சுருக்கமாக CLK) என்ற உள்ளீட்டின் நேர வரையரைப்படி இயங்குகின்றன. ஒரே சீராக 0 நிலைக்கும் 1 நிலைக்கும் மாறி மாறி இடம் பெயரும் உள்ளீடு (input) கிளாக் என்றழைக்கப்படுகிறது. கிளாக்கை உள்ளீடாகப் பெற்றுச் செயல்படும் (சில கேட்'களால் ஆன) நுண்பொருளை FLIPFLOP என்கிறோம். மின்னணு சர்குயூட்கள் பொதுவாக பல உள்ளீடுகளும் வெளியீடுகளும் கொண்டவை. அவற்றின் செயலாக்கத்தை (அதாவது, கிளாக் வாயிலாக நிறுவப்பட்ட ஒரு குறிப்பிட்ட கணத்தில், உள்ளீடுகளின் நிலையைப் (0,1) பொருத்து வெளியீடுகளின் நிலை எவ்விதம் அமைய வேண்டும்) சரி பார்த்துக் கொள்ள அலைபடங்கள் (Waveform diagrams) உதவுகின்றன. கீழே உள்ள படத்தில் காண்க.



வன்பொருள் சர்குயூட் வடிவமைப்பு என்பதும், தற்சமயம், பொட்டி தட்டும் (code அடிக்கும்) வேலை தான்! இதற்கென்று பிரத்யேகமான வன்பொருள் வடிவாக்க மொழிகள் (Hardware Description Languages) உள்ளன. பொதுவாக, வெரிலாக் (verilog) மற்றும் VHDL என்ற இரண்டு மொழிகளே பயன்படுத்தப்படுகின்றன. இம்மொழிகளின் ஆணைகளைக் கொண்டு, பலவகை கேட்'களும், flipflop-களும் கொண்டு உருவாக்கப்பட வேண்டிய ஒரு வன்பொருள் செயலாக்கத்தை (hardware functionality), code வடிவில் எழுத/விளக்க முடிகிறது.

15 ஆண்டுகளுக்கு முன், இந்த மொழி வசதி இல்லை. அப்போதெல்லாம், ஒரு சர்குயூட்டை உருவாக்க, CAD கருவிகளின் துணை கொண்டு, கணினி திரையில் வன்பொருள் செயலாக்கத்தை ஒரு சர்குயூட் படமாக வரைய வேண்டிய சூழல் நிலவியது. இம்மொழிகள் வந்த பிறகு, மின்னணு சர்குயூட் வடிவாக்கப் பணியும் எளிதாகி, நிறைய நேரமும் மிச்சப்படுகிறது. அதோடு, மிகப்பெரிய (கோடிக்கணக்கான கேட்'களால் ஆன), கடினமான (complex) வன்பொருள் செயலாக்கத்தை, ஒரு வடிவாக்க அணியிடம் (Design Team), பல கூறுகளாகப் பிரித்து தர ஏதுவாகிறது. இறுதியில், அக்கூறுகளை ஒருங்கிணைப்பதன் மூலம், பெரியதொரு வன்பொருள் செயலாக்கத்தின் Top Level Code உருவாகிறது. ஒரு Sample code கீழே!



இப்படித் தயாரான குறியை (code) சிமுலேட்டர் (Simulator) என்ற EDA கருவி கொண்டு, நமக்குத் தேவையான வன்பொருள் செயலாக்கத்தோடு (மேலே குறிப்பிட்ட அலைபடங்கள் துணையோடு) சரி பார்க்க (validate) முடிகிறது. செயலாக்கத்தில் குறை/தவறு இருப்பின், மென்பொருளாளர்கள் செய்வது போலவே, குறியை debug செய்து மாற்றுகிறோம் !

அடுத்த கட்டம் தான் முக்கியமானது. ஸின்தஸைஸர் (Synthesizer) என்ற EDA கருவி தான், சிமுலேட்டர் மூலம் சரிபார்க்கப்பட்ட குறியை, வன்பொருள் சர்குயூட்டாக மாற்றுகிறது. அதை உருவாக்க, ஸின்தஸைஸர் கருவிக்கு, பலவகை கேட்'கள் பற்றிய விவரங்கள் அடங்கிய 'வன்பொருள் நூலகங்கள்' (Hardware Libraries), தேவைப்படுகின்றன. அந்த சர்குயூட்டை கணினித் திரையிலும் பார்க்க முடிகிறது. அதாவது, நாமே சர்குயூட் வரைந்து மெனக்கட வேண்டிய காலமெல்லாம் எப்போதோ மலையேறி விட்டது !

ஸின்தஸைஸர் கருவியின் வெளியீடு (output) மற்றொரு EDA கருவியான Place and Router-க்கு உள்ளீடாக(input) வழங்கப்பட்டு, இறுதியில், மின்னணு சர்குயூட்டின் வன்பொருள் செயலாக்கமானது, ஒரு சிலிக்கன் சில்லில் பதியப்பட வேண்டிய ஒரு வகை ஜியாமெட்ரிக் விவரங்கள் (அதாவது, சிலிக்கன் சில்லுக்குள் சர்குயூட்டின் ஒவ்வொரு கேட்'டும் (gate) அமைய வேண்டிய இடம் (co-ordinates) மற்றும் அதற்கும் மற்ற கேட்'களுக்கும் உள்ள இணைப்புகள் போன்ற தகவல்கள்) அடங்கிய கோப்பாக, சிலிக்கன் சில்லை தயாரிக்கும் (chip fabrication) நிறுவனத்திற்கு (Foundry) தரப்படுகிறது. கீழே உள்ள படத்தில் காண்பது போன்ற சிலிக்கன் சில்லுகள் உருவாகின்றன.


Place and Route கருவி மற்றும் Foundry குறித்து, அதிக டெக்னிகலான விவரங்களை தவிர்த்து விடுகிறேன்! இதற்கு மேல் உங்களை 'அறுத்தால்' அடி விழும் என்ற பயம் தான் :)
ஒரு 'சிப்'பின் கதையை இதை விட எளிமையாக என்னால் கூற முடியாது, சுபம் :)

என்றென்றும் அன்புடன்
பாலா

நன்றி நண்பரே !

வருகை தந்தமைக்கு நன்றி! உங்கள் மேலான கருத்துக்களை எதிர்பார்க்கிறேன்!
Related Posts with Thumbnails